package com.gitee.wsl.mathematics.coordinate.d3


import com.gitee.wsl.mathematics.coordinate.Coordinate
import com.gitee.wsl.mathematics.coordinate.d2.Coordinate2
import com.gitee.wsl.mathematics.vector.vec2.Vec2
import com.gitee.wsl.mathematics.vector.vec2.Vector2
import com.gitee.wsl.mathematics.vector.vec3.Vector3
import com.gitee.wsl.mathematics.vector.vec3.Vector3D
import com.gitee.wsl.mathematics.vector.vec3.Vector3F

typealias Point3D = Coordinate3<Double,*>
typealias Point3F = Coordinate3<Float,*>
typealias Point3<T,V> = Coordinate3<T,V>

interface Coordinate3<T:Number,V: Coordinate3<T, V>>: Coordinate<T, V>, Vector3<T, V> {

    //override val vec2: Coordinate2<T, *>
    //override val vec3: Coordinate3<T, *>
//
    //override val xy : Coordinate2<T, *>
    //override val xz : Coordinate2<T, *>
    //override val yz : Coordinate2<T, *>

    override fun createVec2(a:T, b:T):Coordinate2<T, *>

}

interface  Coordinate3F<V: Coordinate3<Float,V>> : Coordinate3<Float, V>,Vector3F<V>{

}


interface  Coordinate3D<V: Coordinate3<Double,V>> : Coordinate3<Double, V>, Vector3D<V> {

}

